// flutter手势实现原理
{
  /*  */
}

// flutter widget响应生命周期
{
}

// flutter中组件的key刷新原理
{
}

// flutter与navtive在线程和业务流上的UI布局原理
{
}

// 说一下你常用的flutter组件有哪些？
{
  /* 
  常用的组件有Material、Scaffold
  组件类 Container，Text，TextField文本输入框组件，AppBar，TabBar,TabView，Size,SizeBox，IconButton普通的按钮，RaisedButton漂浮凸起按钮，Form/TextFormField表单组件，Radio()单选框组件，Checkbox()复选框，Card，
  图片类 Icon图标库，NetworkImage、AssetImage
  剪裁类 ClipOval，ClipRect、CircleAvatar
  事件组件类 InkWell、GestureDetector
  布局类 Center，Stack，Row，Colunm，Wrap，Positioned定位
  填充类 Expanded
  弹层类 showDialog，showGeneralDialog
  动画类 AnimatedWidget，AnimatedBuilder，Transform
  */
}

// flutter路由怎么声明的？
{
  /* 
  在根组件中的MaterialApp内有一个routers参数，以key: ()=>Widget形式声明路由

  另外通过onGenerateRoute参数，可以提出路由上面参数，进行容错处理或其它事情
  */
}

// 埋点做过么？你是怎么做的
{
  /* 
  
  */
}

// flutter数据缓存你是怎么做的？
{
  /* 
  数据持久化的话我用过 localstorage和shared_preferences，前者基于JSON方式类型，后者数据持久化存储的是相应类型，读取出来默认就是指定类型

  还有一个sqflite本地数据库持久化，但是操作成本相应高一点，使用的sql语法读取本地数据库数据
  */
}

// 你用过哪些flutter插件
{
  /* 
  用过 dio请求插件，
  组件：fluttertoast，flutter_swiper，flutter_easyrefresh上拉加载，flutter_spinkit动画组件，
  缓存：cached_network_image图片缓存，localstorage和shared_preferences，
  解析处理类：flutter_html把html转组件，url_launcher跳转Url处理，
  硬件调用： barcode_scan扫一扫
  调试插件：jh_debug，
  */
}

// 你使用过哪些优化手段？
{
  /* 
  1、耗时复杂计算 使用子线程处理，用compute函数。或dart原生的isolate
  2、页面中继承AutomaticKeepAliveClientMixin缓存组件，wantKeepAlive返回true
  3、PageController组件中开启keepAlive缓存
  4、图片显示使用和三方插件cached_network_image，让图片本地缓存
  5、当前组件不更新的，统一使用Stateless组件
  6、Animated相关动画组件，非动画系列不要放在build中，而是放在child中，保证每次动画的时候不会重新生成组件。
  7、路由及状态管理进行懒加载，非首先关键显示的，渲染的差不多后才进行异步插入到路由及provider状态管理中
  8、业务中善用static、final、const关键字，确保在页面更新的时候，一些常量不变量的值不会重新在次生成。
  9、合理的在组件中声明key，UniqueKey()，从而提升组件更新的，flutter计算diff的时间。
  */
}
